/**
 * 多态
 * dart中的多态
 * 允许将子类类型的指针赋值给父类类型的指针 同一个函数调用会有不同的执行效果
 * 
 * 子类的实例赋值给父类的引用
 * 
 * 多态就是父类定义一个方法不去实现 让继承它的子类去实现  每个子类有不同的表现
 * 
 */
//定义抽象类
abstract class Animal {
  eat();//抽象方法
}
class Dog extends Animal{
  @override
  eat() {
    // TODO: implement eat
    print("Dog 吃骨头");
  }
  run(){
    print("run---Dog---->");
  }
}
class Cat extends Animal{
  @override
  eat() {
    // TODO: implement eat
    print("Cat de eat");
  }
  run(){
    print("cat 的 run 方法");
  }

}
main() {
  //Dog d = new Dog();
  //d.eat();
 // d.run();
//把子类的实例 赋值给父类的引用 多态
  Animal dd = new Dog();
  dd.eat();
}